#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

class CTextSearcher {

private:
	struct node{
		int len, link, pos;
		int next[27];
		vector <int> go;
	};
	
	int sz, last;
	vector <node> v;
	
	int get_code(char ch){
		if(ch >= 'a' && ch <= 'z'){
			return ch - 'a';
		}
		if(ch >= 'A' && ch <= 'Z'){
			return ch - 'A';
		}
		return 26;
	}
	
	void add(int code){
		int nlast = ++sz;
		v[nlast].len = v[nlast].pos = v[last].len + 1;
		v[nlast].go.clear();
		for(int i = 0; i < 27; i++){
			v[nlast].next[i] = -1;
		}
		int p = last;
		while(p != -1 && v[p].next[code] == -1){
			v[p].next[code] = nlast;
			p = v[p].link;
		}
		if(p == -1){
			v[nlast].link = 0;
		}
		else{
			int q = v[p].next[code];
			if(v[p].len + 1 == v[q].len){
				v[nlast].link = q;
			}
			else{
				int clone = ++sz;
				v[clone].len = v[p].len + 1;
				v[clone].pos = v[q].pos;
				v[clone].link = v[q].link;
				for(int i = 0; i < 27; i++){
					v[clone].next[i] = v[q].next[i];
				}
				while(p != -1 && v[p].next[code] == q){
					v[p].next[code] = clone;
					p = v[p].link;
				}
				v[q].link = v[nlast].link = clone;
			}
		}
		last = nlast;
	}
	
	void dfs(int cur, int len, vector <int> &output){
		output.push_back(v[cur].pos - len + 1);
		for(int i = 0; i < (int)v[cur].go.size(); i++){
			dfs(v[cur].go[i], len, output);
		}
	}
	
public:
    explicit CTextSearcher( const string& sourceText ){
		int n = (int)sourceText.size();
		v.resize(2 * n + 10);
		v[0].len = v[0].pos = 0;
		v[0].link = -1;
		v[0].go.clear();
		for(int i = 0; i < 27; i++){
			v[0].next[i] = -1;
		}
		last = sz = 0;
		for(int i = 0; i < n; i++){
			add(get_code(sourceText[i]));
		}
		for(int i = 1; i <= sz; i++){
			v[v[i].link].go.push_back(i);
		}
	}
	
    //Найти начала всех вхождений patternText в sourceText и вывести их в массив output
    void FindAllOccurences( const string& patternText, vector<int>& output ){
		int n = (int)patternText.size(), cur = 0;
		for(int i = 0; i < n; i++){
			int code = get_code(patternText[i]);
			if(v[cur].next[code] == -1){
				// not found
				return;
			}
			cur = v[cur].next[code];
		}
		dfs(cur, (int)patternText.size(), output);
		sort(output.begin(), output.end());
		output.resize(unique(output.begin(), output.end()) - output.begin());
	}

	
};

int main(){
	string s, t;
	cin >> s >> t;
	CTextSearcher searcher(s);
	freopen(t.c_str(), "r", stdin);
	int it = 0;
	while(cin >> t){
		vector <int> output;
		searcher.FindAllOccurences(t, output);
		if((int)output.size() > 0){
			cout << "for word \"" << t << "\": ";
			for(int i = 0; i < (int)output.size(); i++){
				cout << output[i] << " ";
			}
			cout << endl;
		}
	}
	return 0;
}
